package cn.hbu.zlfw.common.util;

import java.util.HashMap;
import java.util.Map;
/**
 * 
 * @ClassName: createObjectFactory 
 * @Description: 延迟加载的工厂类（减少新对象的产生）
 * @author 王鹏伟<1223443289@qq.com>
 * @date 2017年12月12日 下午3:05:04 
 * @vsersion:v1.0
 */
public class CreateObjectFactory {
	private static final Map<String, Object> instanceMap = new HashMap<String, Object>();
	/**
	 * 
	 * @Title: createInstance 
	 * @Description:  延迟加载的工厂类（减少新对象的产生）
	 * @return T 
	 * @throws
	 */
	@SuppressWarnings("unchecked")
	public static <T> T createInstance(Class<?> cl) {
		T t = null;
		if (instanceMap.containsKey(cl.getName())) {
			t = (T) instanceMap.get(cl.getName());
		} else {
			try {
				t = (T) cl.newInstance();
				instanceMap.put(cl.getName(), t);
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		return t;
	}

}
